import Vue from 'vue'
//vue开启debug
Vue.config.devtools = true
import App from './App'
import router from './router'//路由
import axios from "axios"//ajax
Vue.prototype.axios = axios

//
// import Antd from 'ant-design-vue';
// import 'ant-design-vue/dist/antd.css';
//
// Vue.use(Antd);

// import iView from 'iview'//iview
// import {Message, Spin} from 'iview'
// import 'iview/dist/styles/iview.css'
// Vue.use(iView)

//签字照片
import vueEsign from 'vue-esign'
Vue.use(vueEsign);

import ViewUI from 'view-design';
import {Message, Spin} from 'view-design'
import 'view-design/dist/styles/iview.css';

Vue.use(ViewUI)

import ZkTable from 'vue-table-with-tree-grid'//树形表格
Vue.use(ZkTable)
import G2 from '@antv/g2';//统计图
Vue.prototype.G2 = G2;
import G6 from '@antv/g6';//图可视化引擎
Vue.prototype.G6 = G6;


import * as echarts from 'echarts';

Vue.prototype.echarts = echarts;


import BaiduMap from 'vue-baidu-map';//百度地图
Vue.use(BaiduMap, {
  ak: "2pSikfIkbZoTq08A05sOFFeMA4XpQX2C"
})

import 'font-awesome/css/font-awesome.min.css'//字体样式
Vue.prototype.acrossDomains = process.env.ACROSS_DOMAINS;//跨域获取数据


// 使用vuex
import store from './store';

//图片查看使用
import Viewer from 'v-viewer'
import 'viewerjs/dist/viewer.css'

Vue.use(Viewer);
Viewer.setDefaults({
  Options: {
    "inline": true,
    "button": true,
    "navbar": true,
    "title": true,
    "toolbar": true,
    "tooltip": true,
    "movable": true,
    "zoomable": true,
    "rotatable": true,
    "scalable": true,
    "transition": true,
    "fullscreen": true,
    "keyboard": true,
    "url": "data-source"
  }
});

import Print from '@/assets/plugs/print'//打印
Vue.use(Print) // 注册


//视频
import Video from 'video.js'
import 'video.js/dist/video-js.css'
Vue.prototype.$video = Video

//视频终端使用
import flvjs from 'flv.js'
Vue.prototype.flvjs = flvjs

//富文本
import VueTinymce from "@packy-tang/vue-tinymce"
Vue.use(VueTinymce)

//图片裁剪
import VueCropper from 'vue-cropper'
Vue.use(VueCropper)

//表单提交数据格式化
import qs from 'qs'

Vue.prototype.qs = qs;

// 引入qrcode 二维码
import QRCode from 'qrcodejs2'

Vue.prototype.$QRCode = QRCode;

//公共方法 和变量
import global from './api/common.js'

Vue.prototype.public = global//把引入的公共方法 变成全局使用
// // 调用全集方法 和变量 that.public.commonFun();

//按钮权限使用
import hasPermission from './api/hasPermission.js';

Vue.use(hasPermission);

//全部请求接口
import apiUrl from './api/api.js'

Vue.prototype.apiUrl = apiUrl;//把引入的公共方法 变成全局使用


//公共路由 使用
import loadNav from './router/dynamicRouting.js'

Vue.prototype.loadNav = loadNav//把引入的公共方法 变成全局使用


//axios 加拦截器 发送拦截
axios.interceptors.request.use(function (config) {
    // console.log("发送拦截", config.url)//
    if (!!config.url) {
      if (!!sessionStorage.getItem('loginData')) {  // 判断是否存在token，如果存在的话，则每个http header都加上token
        if (!!JSON.parse(sessionStorage.getItem('loginData')).access_token) {
          config.headers.Authorization = "Bearer " + JSON.parse(sessionStorage.getItem('loginData')).access_token;
        }
      }
    }
    return config;
  },
  function (error) {
    // console.log("对请求错误做些什么")
    return Promise.reject(error);
  }
);


var exitRemind = 0;//退出提醒


//接受拦截
axios.interceptors.response.use(function (response) {
  if(response.config.url.indexOf("StandardApiAction_") != -1){
    return response;
  }
  if(!response.data){
    return response;
  }
  if(response.data.status == 1000){//天气使用
    return response;
  }
  if (response.data.code != 200 && response.data.code != 0) {
    Spin.hide();
    Message.error({
      content: response.data.msg,
      duration: 5
    });
  } else {
    return response;
  }
}, function (error) {
  if(error.response.status === 404){
    Spin.hide();
    Message.error({
      content: '请求接口不存在，请联系0319-3303099。',
      duration: 5
    });
  }else if (error.response.status === 500) {
    Spin.hide();
    Message.error({
      content: '系统出现未知异常，请联系0319-3303099。',
      duration: 5
    });
  } else if (error.response.status === 403) {
    Spin.hide();
    if (exitRemind != 0) {
      return false;
    }
    exitRemind++;
    Message.error({
      content: '身份信息已失效,请重新登录。',
      onClose: function () {
        sessionStorage.clear();// 删除所有数据
        location.reload()
        // router.push({
        //   path: '/'
        // })
      }
    });
  } else if (error.response.status === 401) {
    Spin.hide();
    console.log(error.response)
    if (error.response.data.code == 100) {
      Message.error({
        content: error.response.data.msg,
        duration: 5
      });
    } else if (error.response.data.code == 101) {
      if (exitRemind != 0) {
        return false;
      }
      exitRemind++;
      Message.error({
        content: '身份信息已失效,请重新登录。',
        onClose: function () {
          sessionStorage.clear();// 删除所有数据
          location.reload()
          // router.push({
          //   path: '/'
          // })
        }
      });
    }
  } else {
    Spin.hide();
    Message.error({
      content: error.response.data.msg,
      duration: 5
    });
  }
  // return {};
});


Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  components: {App},
  template: '<App/>',
  //在main.js 写入 公共变量
  //that.$root.wz 读取
  //that.$root.wz = "" 修改
  data: function () {
    return {
      wz: {},
    }
  }
})


